import moment from 'moment'

/**
 * 格式化日期
 * @param {Date|string|number} date - 日期
 * @param {string} format - 格式，默认'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 格式化后的日期字符串
 */
export function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
  if (!date) return ''
  return moment(date).format(format)
}

/**
 * 获取当前日期
 * @param {string} format - 格式，默认'YYYY-MM-DD'
 * @returns {string} 当前日期字符串
 */
export function getCurrentDate(format = 'YYYY-MM-DD') {
  return moment().format(format)
}

/**
 * 获取指定日期的前n天/后n天
 * @param {Date|string|number} date - 基准日期
 * @param {number} days - 天数，正数为后n天，负数为前n天
 * @param {string} format - 格式，默认'YYYY-MM-DD'
 * @returns {string} 计算后的日期字符串
 */
export function addDays(date, days, format = 'YYYY-MM-DD') {
  return moment(date).add(days, 'days').format(format)
}

/**
 * 计算两个日期之间的天数差
 * @param {Date|string|number} startDate - 开始日期
 * @param {Date|string|number} endDate - 结束日期
 * @returns {number} 天数差
 */
export function diffDays(startDate, endDate) {
  return moment(endDate).diff(moment(startDate), 'days')
}

/**
 * 判断日期是否在指定范围内
 * @param {Date|string|number} date - 要判断的日期
 * @param {Date|string|number} startDate - 开始日期
 * @param {Date|string|number} endDate - 结束日期
 * @returns {boolean} 是否在范围内
 */
export function isDateInRange(date, startDate, endDate) {
  const target = moment(date)
  return target.isBetween(moment(startDate), moment(endDate), null, '[]')
}
</script>
